<html>
    <head>
        <title>常见问题</title>
    </head>
    <body>
        <script>
             /*
              十四、常见问题

                    1、如何获取页面上传递的数据

                            在onLoad方法里得到，onLoad的参数是其他页面打开单管页面所传递的数据。

                    
                    2、如何设置全局数据和全局方法 

                            uni-app 内置了 Vuex , 在 app 里的使用，可参考 hello-uniapp    store/index.js  

                                  // store.js

                                    import Vue from 'vue'
                                    import Vuex from 'vuex'
                                    Vue.use(Vuex);
                                    const store = new Vuex.Store({
                                       state: {...},
                                       mutations: {...},
                                       actions: {...}
                                    })
                                    export default store



                                  // mian.js
                                    import store from './store'
                                    Vue.prototype.$store = store
                                    const app = new Vue({
                                      store,...
                                    })

                                  
                                  //test.vue 使用时：

                                    import {mapState,mapMutations} from 'vuex'


                    3、如何捕获 app 的 onError

                            由于onError 并不是完整意义上的生命周期，所以只提供一个捕获错误的方法，在app的根组件上添加名为onError的回调函数即可。 
                            如下：

                                export default{

                                     // 只有 app 才会有 onLaunch 生命周期
                                     onLaunch(){
                                     
                                     },


                                     // 捕获 app Error
                                     onError(err){
                                        console.log(err)
                                     }
                                }

                    4、组件属性设置不生效解决办法

                          当重复设置某些属性为相同的值时，不会同步到view层。

                          例如：  每次将scroll-view 组件的 scroll-top 属性值设置为0，只有第一次能顺利返回顶部。

                                  这和 props的单向数据流特性有关，组件内部 scroll-top 的实际值改动后，其绑定的属性并不会一同变化。

                          解决办法有两种 以scroll-view组件为例）：

                                <1>、监听scroll事件，记录组件内部变化的值，在设置新值之前先设置为记录的当前值

                                      <scroll-view scroll-y="true" :scroll-top="scrollTop" @scroll="scroll"></scroll-view>

                                      export default {
                                          data() {
                                              return {
                                                  scrollTop: 0,
                                                  old: {
                                                      scrollTop: 0
                                                  }
                                              }
                                          },
                                          methods: {
                                              scroll: function(e) {
                                                  this.old.scrollTop = e.detail.scrollTop
                                              },
                                              goTop: function(e) {
                                                  this.scrollTop = this.old.scrollTop
                                                  this.$nextTick(function() {
                                                      this.scrollTop = 0
                                                  });
                                              }
                                          }
                                      }


                                <2>、监听scroll事件，获取组件内部变化的值，实时更新其绑定值

                                      <scroll-view scroll-y="true" :scroll-top="scrollTop" @scroll="scroll"></scroll-view>

                                      	export default {
                                            data() {
                                              return {
                                                scrollTop: 0,
                                              }
                                            },
                                            methods: {
                                              scroll: function(e) {
                                                // 如果使用此方法，请自行增加防抖处理
                                                this.scrollTop = e.detail.scrollTop
                                              },
                                              goTop: function(e) {
                                                this.scrollTop = 0
                                              }
                                            }
                                        }

         */
        </script>
    </body>
</html>